The present disclosure is generally related to gaming machines such as reel-type or video slot machines, video poker machines, etc., and more particularly, to systems and techniques for configuring gaming machines.
A typical gaming machine includes a processor that can be used to configure visual displays of the gaming machine (e.g., e.g., a video display), audio generated by the gaming machine, game play, etc. The processor is under control of machine-executable code stored in a memory of the gaming machine. Some or all of the machine-executable code is usually generated by first writing program instructions in a high-level programming language such as C++. The program instructions in the high-level programming language may be included in multiple files corresponding to different aspects of operation of the gaming machine. Then, the program instructions in the high-level programming language are compiled into the machine-executable code (i.e., compiled code). This may include a linking procedure where program instructions included in different program segments and/or stored in multiple files are linked together in a well known manner. Typically, gaming regulators require that the operation of compiled code be tested and verified before it can be deployed in a gaming machine in casino.
If it is desired to change the configuration of the gaming machine (for example, to modify video displayed on, or audio generated by, the gaming machine), the program in the high-level programming language must be modified. Then, the compiling and linking procedure are employed to generate the compiled code. Because portions of the program in the high-level programming language that correspond to core functionality of the gaming machine are critical, these portions must be kept in a secure environment. The compiling and/or linking procedure typically requires access to the critical portions of the program, and thus this procedure may also need to take place in a secure environment. Additionally, before the new compiled code can be deployed in a gaming machine in casino, gaming regulators may need to test and verify the compiled code. Therefore, even changes to non-critical portions of the program (e.g., audio generation) and/or minor changes may involve considerable time and expense.
A different approach is to include most functionality of a program in machine-executable code, but to put some of the program's functionality in a “script file,” where the script file includes instructions written in a high-level scripting language. Typically, the script file itself must be compiled using a script file compiler. Then, at run-time, a “virtual machine” executes the compiled script file. To debug the script file, a special debugging tool set is used. Thus, this approach requires two different compilers (one for the main portion of the program and one for the script file) and, similarly, two different sets of debugging tools.